package com.cskaoyan.javase.oop3._1interface._3exercise;

/**
 * 教练（Coach）和运动员（Sportsman）案例
 * 小试牛刀请用所学知识分析：
 * 这个案例中有哪些抽象类，哪些接口，哪些具体类。
 *
 * 现在有乒乓球运动员和篮球运动员，乒乓球教练和篮球教练。
 * 为了能够出国交流，跟乒乓球相关的人员都需要学习英语。
 *
 * 普通类: 各种运动员,各种教练
 * 抽象类: 抽象的人类,抽象的教练类,抽象的运动员类
 * 接口: 学习
 *
 * @since 09:56
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        ILearning i = new TableTennisCoach();
        // i = new BasketballSportsman();
        BasePerson bp = new TableTennisCoach();
        Object o = new TableTennisCoach();
    }
}

abstract class BasePerson {
    private String name;
    private int age;
}

abstract class BaseSportsman extends BasePerson {
    public abstract void training();
}

abstract class BaseCoach extends BasePerson {
    public abstract void teach();
}

interface ILearning {
    void learningEnglish();
}

// 篮球运动员
class BasketballSportsman extends BaseSportsman {
    @Override
    public void training() {
        System.out.println("教练,我要打篮球,顺带来一段rap!");
    }
}

// 乒乓球教练
class TableTennisCoach extends BaseCoach implements ILearning {

    @Override
    public void teach() {
        System.out.println("我来教你打乒乓球!");
    }

    @Override
    public void learningEnglish() {
        System.out.println("既然是出国交流,那我开个宾馆学英语也很正常吧!");
    }
}

